<html>
 <head>
  <meta charset="UTF-8">
 </head>
 <body>
  <h1 data-lake-id="KISAL" id="KISAL"><span data-lake-id="uee9e1492" id="uee9e1492">面试者背景</span></h1>
  <p data-lake-id="ud217a05e" id="ud217a05e"><br></p>
  <p data-lake-id="ufa72cf09" id="ufa72cf09"><span data-lake-id="u875a24d6" id="u875a24d6">2年后端JAVA经验，代销平台，订单模块，购物车，详情页，分布式架构，简历上写了自己做过分布式系统、对于分布式事务、分布式锁等有了解、</span></p>
  <p data-lake-id="u05cf9561" id="u05cf9561"><strong><span data-lake-id="uedfa8383" id="uedfa8383" class="lake-fontsize-12">​</span></strong><br></p>
  <h1 data-lake-id="K6NgW" id="K6NgW"><span data-lake-id="u11cd8298" id="u11cd8298">面试过程</span></h1>
  <blockquote data-lake-id="ude6851cb" id="ude6851cb" class="lake-alert lake-alert-warning">
   <p data-lake-id="u225798d9" id="u225798d9"><span data-lake-id="uf53770f3" id="uf53770f3">项目自己负责的购物车模块介绍一下？未登录、redis存储，临时用户-&gt;登录用户的购物车合并，购物车限制，</span></p>
   <p data-lake-id="u11adb9d1" id="u11adb9d1"><span data-lake-id="ufb2af29c" id="ufb2af29c">登录用户的购物车存储，在</span><span data-lake-id="uced7be6a" id="uced7be6a">redis</span><span data-lake-id="u47391cd7" id="u47391cd7">中</span><span data-lake-id="u9f715fc5" id="u9f715fc5">Key</span><span data-lake-id="u137f67a0" id="u137f67a0">和</span><span data-lake-id="ud31a89cf" id="ud31a89cf">value</span><span data-lake-id="u5019187a" id="u5019187a">都是什么？除了</span><span data-lake-id="u1e21ddca" id="u1e21ddca">SKUID</span><span data-lake-id="udeb1dfe2" id="udeb1dfe2">为什么还需要存商品的信息？价格、库存改的时候怎么办？为什么要保存而不是直接查一下？</span></p>
   <p data-lake-id="uc5877d4e" id="uc5877d4e"><span data-lake-id="u2a711378" id="u2a711378">登录用户和未登录用户，购物车限制有区别？存储时间的区别，</span></p>
   <p data-lake-id="u0e35c294" id="u0e35c294"><span data-lake-id="u6b39b4b9" id="u6b39b4b9">如何实现登录用户可以存</span><span data-lake-id="ubbe739c4" id="ubbe739c4">1000 sku,</span><span data-lake-id="u82616d4a" id="u82616d4a">未登录用户只能存</span><span data-lake-id="uaeed1335" id="uaeed1335">200 sku</span><span data-lake-id="u225319e9" id="u225319e9">，如何实现？</span></p>
   <p data-lake-id="uea6d8aeb" id="uea6d8aeb"><span data-lake-id="uf520d22f" id="uf520d22f">有没有可能并发情况导致超过购物车限制？</span></p>
   <p data-lake-id="u79aec3ce" id="u79aec3ce"><span data-lake-id="u6f3c0fb9" id="u6f3c0fb9">购物车只存在</span><span data-lake-id="ud6591b2a" id="ud6591b2a">Redis</span><span data-lake-id="ub84ddab6" id="ub84ddab6">里面，数据会丢吗？</span><span data-lake-id="uf99dd682" id="uf99dd682">AOF</span><span data-lake-id="u0dc5d1f6" id="u0dc5d1f6">、</span></p>
   <p data-lake-id="u432b823b" id="u432b823b"><span data-lake-id="u64c0aad4" id="u64c0aad4">AOF</span><span data-lake-id="ub70b49d6" id="ub70b49d6">能保证不丢吗？混合模式为什么数据就不丢？</span></p>
   <p data-lake-id="u266cf644" id="u266cf644"><span data-lake-id="u03741e92" id="u03741e92">如果需要实现一个凑单的功能，你会考虑哪些功能？或者系统上可能会做哪些改动？凑单凑满之后，优惠券失效了怎么办？</span></p>
   <p data-lake-id="ud5b7c9bd" id="ud5b7c9bd"><span data-lake-id="ud2c44672" id="ud2c44672">分布式系统之间的数据一致性的问题如何保证的？订单创建成功，但是购物车删除商品失败了怎么办？</span></p>
   <p data-lake-id="ub10338a4" id="ub10338a4"><span data-lake-id="u2766280f" id="u2766280f">分布式事务的方案都有哪些？</span><span data-lake-id="udcc056ae" id="udcc056ae">SEATA</span><span data-lake-id="u0bcdfe89" id="u0bcdfe89">、</span><span data-lake-id="u45f43b6b" id="u45f43b6b">mq</span><span data-lake-id="u64190916" id="u64190916">最终一致性、</span></p>
   <p data-lake-id="ue8411316" id="ue8411316"><span data-lake-id="ub8be282b" id="ub8be282b">MQ</span><span data-lake-id="u88afcc3b" id="u88afcc3b">实现最终一致性，具体是怎么做的？补偿机制怎么做？</span></p>
   <p data-lake-id="u93389504" id="u93389504"><span data-lake-id="ud1d61f2e" id="ud1d61f2e">Redis</span><span data-lake-id="u6ee0421c" id="u6ee0421c">都在哪些场景中用？缓存、</span><span data-lake-id="u7f72f79b" id="u7f72f79b">token</span><span data-lake-id="ue493cfac" id="ue493cfac">，</span></p>
   <p data-lake-id="u0040dc00" id="u0040dc00"><span data-lake-id="ub455a953" id="ub455a953">商品详情页快照的设计可以介绍一下吗？每一个订单都对应一个详情页快照？有什么优化的方案吗？</span></p>
   <p data-lake-id="u0a9af6f1" id="u0a9af6f1"><span data-lake-id="ucd59d25c" id="ucd59d25c">分布式锁有用过吗？商品详情并发加锁？分布式锁能解决缓存穿透吗？？</span></p>
   <p data-lake-id="u3306aec9" id="u3306aec9"><span data-lake-id="ud71bc168" id="ud71bc168">介绍一下</span><span data-lake-id="u77933cdd" id="u77933cdd">threadlocal</span><span data-lake-id="uee89c7ee" id="uee89c7ee">？弱引用，</span><span data-lake-id="u35ce2de2" id="u35ce2de2">threadlocal</span><span data-lake-id="u76c9cdb4" id="u76c9cdb4">能解决并发的问题吗？</span><span data-lake-id="u61a63ccf" id="u61a63ccf">threadlocal</span><span data-lake-id="ub1dc178a" id="ub1dc178a">会有内存泄露的问题吗？</span><span data-lake-id="uc1a66496" id="uc1a66496">threadlocalMap</span><span data-lake-id="u384df351" id="u384df351">和普通的</span><span data-lake-id="u202d74a8" id="u202d74a8">hashmap</span><span data-lake-id="uce31c0fa" id="uce31c0fa">有什么区别？</span></p>
   <p data-lake-id="u3f0e9c4b" id="u3f0e9c4b"><span data-lake-id="uf54ee9fe" id="uf54ee9fe">Hashmap</span><span data-lake-id="ub49de151" id="ub49de151">在</span><span data-lake-id="ua82cc5ef" id="ua82cc5ef">1.8</span><span data-lake-id="uc4a340f9" id="uc4a340f9">中除了引入红黑树、还有其他改动吗？为什么头插法要改成尾插法？</span><span data-lake-id="u4801e871" id="u4801e871">hashmap</span><span data-lake-id="u5a699ca9" id="u5a699ca9">的方法的具体实现，比如</span><span data-lake-id="ud18da762" id="ud18da762">put</span><span data-lake-id="uef9a7114" id="uef9a7114">？</span><span data-lake-id="u4ae54570" id="u4ae54570">hashcode</span><span data-lake-id="uc405612d" id="uc405612d">是怎么取到的？</span></p>
   <p data-lake-id="udca2b5ae" id="udca2b5ae"><span data-lake-id="u37502ef4" id="u37502ef4">扩容是怎么实现的？</span></p>
   <p data-lake-id="u3d247850" id="u3d247850"><span data-lake-id="ub1791957" id="ub1791957">1.8里面concurrenthashmap有改动吗？</span></p>
  </blockquote>
  <p data-lake-id="u275b8910" id="u275b8910"><br></p>
  <h1 data-lake-id="B65Uf" id="B65Uf"><span data-lake-id="ubd560f90" id="ubd560f90">题目解析</span></h1>
  <p data-lake-id="u9e8679e6" id="u9e8679e6"><br></p>
  <blockquote data-lake-id="u09d6bb73" id="u09d6bb73" class="lake-alert lake-alert-color4">
   <p data-lake-id="u845d0898" id="u845d0898"><span data-lake-id="u6e0dae97" id="u6e0dae97">登录用户的购物车存储，在redis中Key和value都是什么？除了SKUID为什么还需要存商品的信息？价格、库存改的时候怎么办？为什么要保存而不是直接查一下？</span></p>
  </blockquote>
  <p data-lake-id="u1ae0cd86" id="u1ae0cd86"><br></p>
  <blockquote data-lake-id="u0769e4c5" id="u0769e4c5" class="lake-alert lake-alert-color4">
   <p data-lake-id="u0bc38a8a" id="u0bc38a8a"><span data-lake-id="u12717c08" id="u12717c08">登录用户和未登录用户，购物车限制有区别？存储时间的区别，</span></p>
   <p data-lake-id="ubd26507b" id="ubd26507b"><span data-lake-id="uc0c2f05e" id="uc0c2f05e">如何实现登录用户可以存</span><span data-lake-id="uacd1e784" id="uacd1e784">1000 sku,</span><span data-lake-id="u84bb920e" id="u84bb920e">未登录用户只能存</span><span data-lake-id="u64c75a82" id="u64c75a82">200 sku</span><span data-lake-id="ub07bea44" id="ub07bea44">，如何实现？</span></p>
   <p data-lake-id="u8b5d0c73" id="u8b5d0c73"><span data-lake-id="ub214fb8c" id="ub214fb8c">有没有可能并发情况导致超过购物车限制？</span></p>
  </blockquote>
  <p data-lake-id="uf767d248" id="uf767d248"><br></p>
  <p data-lake-id="u64bea74e" id="u64bea74e"><span data-lake-id="u5247dcb8" id="u5247dcb8" class="lake-fontsize-12">这里是对于面试者负责的业务的讨论，主要考察一下他对于自己负责的购物车业务是不是足够了解，并且探讨一下他们当前的实现方式是不是合理的。</span></p>
  <p data-lake-id="u774bee09" id="u774bee09"><span data-lake-id="ue66eff27" id="ue66eff27" class="lake-fontsize-12">​</span><br></p>
  <p data-lake-id="ua611942d" id="ua611942d"><span data-lake-id="u3eacd9ec" id="u3eacd9ec" class="lake-fontsize-12">通过交流，有经验的面试官很容易就能发现其实他现在的购物车的存储方式是存在很大的问题的，他把商品所有信息都保存在缓存中，而这其实是完全没有必要的。其实只需要保存商品的skuid+数量就行了。</span></p>
  <p data-lake-id="u1273ec58" id="u1273ec58"><span data-lake-id="u576bb1d3" id="u576bb1d3" class="lake-fontsize-12">​</span><br></p>
  <p data-lake-id="u763f7f16" id="u763f7f16"><span data-lake-id="uee6f2c64" id="uee6f2c64" class="lake-fontsize-12">而且，对于未登录的用户和已登录用户的存储，其实也完全可有采用不同的存储架构。所以整个项目看上去还有很大的优化空间。</span></p>
  <p data-lake-id="ubc64f7ca" id="ubc64f7ca"><span data-lake-id="u1a981831" id="u1a981831" class="lake-fontsize-12">​</span><br></p>
  <p data-lake-id="u972da805" id="u972da805"><span data-lake-id="ueaca27f4" id="ueaca27f4" class="lake-fontsize-12">面试中，如果面试官发现候选人的项目中技术方案存在很大的问题的时候，就会开始怀疑项目的真实性以及面试者在项目中的参与度的问题。所以这方面一定要注意。尤其是自己负责的项目的一些细节问题，比如存储方式、表结构设计、分层架构等等。</span></p>
  <p data-lake-id="uf53d063e" id="uf53d063e"><span data-lake-id="u1540f9cc" id="u1540f9cc" class="lake-fontsize-12">​</span><br></p>
  <p data-lake-id="u0f75fbd7" id="u0f75fbd7"><span data-lake-id="u03709b05" id="u03709b05" class="lake-fontsize-12">购物车系统设计：</span><a href="https://www.yuque.com/hollis666/vhr2ge/iv02gw" target="_blank" data-lake-id="u65ef2859" id="u65ef2859"><span data-lake-id="ubfeeb8ee" id="ubfeeb8ee">https://www.yuque.com/hollis666/vhr2ge/iv02gw</span></a></p>
  <p data-lake-id="u5277e281" id="u5277e281"><br></p>
  <blockquote data-lake-id="u8947b304" id="u8947b304" class="lake-alert lake-alert-color4">
   <p data-lake-id="ud15acc02" id="ud15acc02"><span data-lake-id="ue23caa4b" id="ue23caa4b">购物车只存在</span><span data-lake-id="u52bfa4a2" id="u52bfa4a2">Redis</span><span data-lake-id="u9f6dc34d" id="u9f6dc34d">里面，数据会丢吗？</span><span data-lake-id="ua2a78707" id="ua2a78707">AOF</span><span data-lake-id="u6664ff0f" id="u6664ff0f">、</span></p>
   <p data-lake-id="uace5259e" id="uace5259e"><span data-lake-id="u28249c0e" id="u28249c0e">AOF能保证不丢吗？混合模式为什么数据就不丢？</span></p>
  </blockquote>
  <p data-lake-id="ue3127c23" id="ue3127c23"><br></p>
  <p data-lake-id="ud37797a0" id="ud37797a0"><span data-lake-id="uccd309d8" id="uccd309d8">Redis的持久化机制：</span><a href="https://www.yuque.com/hollis666/vhr2ge/zc5q70" data-lake-id="u54bec72e" id="u54bec72e"><span data-lake-id="u2333ec8e" id="u2333ec8e">https://www.yuque.com/hollis666/vhr2ge/zc5q70</span></a></p>
  <p data-lake-id="u8762b647" id="u8762b647"><br></p>
  <blockquote data-lake-id="u1a5a63ba" id="u1a5a63ba" class="lake-alert lake-alert-color4">
   <p data-lake-id="ufce1b2ca" id="ufce1b2ca"><span data-lake-id="ua361380d" id="ua361380d">如果需要实现一个凑单的功能，你会考虑哪些功能？或者系统上可能会做哪些改动？凑单凑满之后，优惠券失效了怎么办？</span></p>
  </blockquote>
  <p data-lake-id="uc55f1cc8" id="uc55f1cc8"><br></p>
  <p data-lake-id="u5b74a608" id="u5b74a608"><span data-lake-id="u055c325e" id="u055c325e">这其实是一个场景题，主要考察一个面试者在实现一个新的功能的时候，考虑的是否全面。</span></p>
  <p data-lake-id="ue5e5833c" id="ue5e5833c"><span data-lake-id="u51a8078a" id="u51a8078a">​</span><br></p>
  <p data-lake-id="u3189b560" id="u3189b560"><span data-lake-id="ua10b44b2" id="ua10b44b2">可能的思路：</span></p>
  <p data-lake-id="ue79f4699" id="ue79f4699"><span data-lake-id="ufdd512a8" id="ufdd512a8">1、用用户的购物车商品的价格、或者已勾选的购物车商品的价格和用户已有的优惠券的门槛进行比较。</span></p>
  <p data-lake-id="u280f0dbe" id="u280f0dbe"><span data-lake-id="ub40a4443" id="ub40a4443">2、当触发一定的凑单阈值的时候，根据用户的购物车信息进行凑单推荐</span></p>
  <p data-lake-id="u3d0bc99b" id="u3d0bc99b"><span data-lake-id="ufa063edf" id="ufa063edf">3、凑单商品要经过算法选择，需要是价格不高、并且实用或者和已加购商品有关的</span></p>
  <p data-lake-id="uc643890b" id="uc643890b"><span data-lake-id="u649c811e" id="u649c811e">4、在选择优惠券的时候，因为要凑单，所以需要考虑优惠券的失效的问题，要么就选择距离失效时间还有几小时以上的优惠券，或者就先进行优惠券的预锁定。</span></p>
  <p data-lake-id="u78a0bd17" id="u78a0bd17"><span data-lake-id="ua2756e5f" id="ua2756e5f">5、对于因凑单加购并购买成功的商品，做打标，方便后面用户自查，以及数据分析，并且还可以智能的推荐给其他用户。</span></p>
  <p data-lake-id="uf65e4ea6" id="uf65e4ea6"><span data-lake-id="ud766f922" id="ud766f922">6、考虑一键凑单功能，让用户提前设置凑单喜好，在用户需要凑单的时候，一键凑单</span></p>
  <p data-lake-id="u37947f81" id="u37947f81"><span data-lake-id="ud4f67dff" id="ud4f67dff">7、增加凑单商品购物车，可以让用户在看到一些价格不高，也不急用的商品，先放到凑单购物车中，后面在日常下单的时候，优先从凑单购物车选择商品进行拼单凑单。</span></p>
  <p data-lake-id="u0c44f954" id="u0c44f954"><br></p>
  <blockquote data-lake-id="uc5b46ef2" id="uc5b46ef2" class="lake-alert lake-alert-color4">
   <p data-lake-id="u85491a67" id="u85491a67"><span data-lake-id="uf9cb85a1" id="uf9cb85a1">分布式系统之间的数据一致性的问题如何保证的？订单创建成功，但是购物车删除商品失败了怎么办？</span></p>
   <p data-lake-id="u89e064cf" id="u89e064cf"><span data-lake-id="uba3dac8b" id="uba3dac8b">分布式事务的方案都有哪些？</span><span data-lake-id="uc2b2d549" id="uc2b2d549">SEATA</span><span data-lake-id="uc4dc2550" id="uc4dc2550">、</span><span data-lake-id="u3b179e7a" id="u3b179e7a">mq</span><span data-lake-id="u20a3c5e3" id="u20a3c5e3">最终一致性、</span></p>
   <p data-lake-id="u89cd5c8d" id="u89cd5c8d"><span data-lake-id="u756a9209" id="u756a9209">MQ实现最终一致性，具体是怎么做的？补偿机制怎么做？</span></p>
  </blockquote>
  <p data-lake-id="u6f7cbfa2" id="u6f7cbfa2"><br></p>
  <p data-lake-id="udc2f5d8e" id="udc2f5d8e"><span data-lake-id="u2ef32faf" id="u2ef32faf">这里考察的其实是分布式系统的数据一致性问题，也就是分布式事务的问题。</span></p>
  <p data-lake-id="ucc511c1a" id="ucc511c1a"><span data-lake-id="u1d340463" id="u1d340463">分布式事务：</span><a href="https://www.yuque.com/hollis666/vhr2ge/yr0lu6" data-lake-id="uca929339" id="uca929339"><span data-lake-id="u08286252" id="u08286252">https://www.yuque.com/hollis666/vhr2ge/yr0lu6</span></a></p>
  <p data-lake-id="u97e7b2ce" id="u97e7b2ce"><span data-lake-id="u9f207b94" id="u9f207b94">事务消息：</span><a href="https://www.yuque.com/hollis666/vhr2ge/abxh7z" data-lake-id="u272d045f" id="u272d045f"><span data-lake-id="u450cff72" id="u450cff72">https://www.yuque.com/hollis666/vhr2ge/abxh7z</span></a></p>
  <p data-lake-id="u37789802" id="u37789802"><span data-lake-id="uab94e998" id="uab94e998">​</span><br></p>
  <blockquote data-lake-id="u93245976" id="u93245976" class="lake-alert lake-alert-color4">
   <p data-lake-id="u5f066e8f" id="u5f066e8f"><span data-lake-id="u8f1f9a70" id="u8f1f9a70">Redis</span><span data-lake-id="u797cb20d" id="u797cb20d">都在哪些场景中用？缓存、</span><span data-lake-id="u63f0ea19" id="u63f0ea19">token</span><span data-lake-id="uec80bddd" id="uec80bddd">，</span></p>
  </blockquote>
  <p data-lake-id="u6bdbdb7b" id="u6bdbdb7b"><br></p>
  <p data-lake-id="u5454c55e" id="u5454c55e"><span data-lake-id="u85c09be5" id="u85c09be5">缓存、排行榜、计数器应用、共享Session、分布式锁、社交网络、消息队列、位操作</span></p>
  <p data-lake-id="ue2a2197c" id="ue2a2197c"><a href="https://www.yuque.com/hollis666/vhr2ge/gxqm60" data-lake-id="uf21a8a69" id="uf21a8a69"><span data-lake-id="uf3c7c613" id="uf3c7c613">https://www.yuque.com/hollis666/vhr2ge/gxqm60</span></a></p>
  <p data-lake-id="u1925d8ef" id="u1925d8ef"><br></p>
  <blockquote data-lake-id="uacdf0fae" id="uacdf0fae" class="lake-alert lake-alert-color4">
   <p data-lake-id="u0d786d06" id="u0d786d06"><span data-lake-id="u1dabe072" id="u1dabe072">商品详情页快照的设计可以介绍一下吗？每一个订单都对应一个详情页快照？有什么优化的方案吗？</span></p>
  </blockquote>
  <p data-lake-id="ub28c4c5e" id="ub28c4c5e"><br></p>
  <p data-lake-id="u8f9f5a1e" id="u8f9f5a1e"><br></p>
  <p data-lake-id="u0fb0a45a" id="u0fb0a45a"><br></p>
  <blockquote data-lake-id="u9ce4e455" id="u9ce4e455" class="lake-alert lake-alert-color4">
   <p data-lake-id="u3f621c6a" id="u3f621c6a"><span data-lake-id="uaa51b49d" id="uaa51b49d">分布式锁有用过吗？商品详情并发加锁？分布式锁能解决缓存穿透吗？？</span></p>
  </blockquote>
  <p data-lake-id="u6af53555" id="u6af53555"><br></p>
  <p data-lake-id="u50273bbc" id="u50273bbc"><span data-lake-id="ucb4b1cbe" id="ucb4b1cbe">分布式锁的多种实现方式：</span><a href="https://www.yuque.com/hollis666/vhr2ge/vi2dze" target="_blank" data-lake-id="u812ae7ba" id="u812ae7ba"><span data-lake-id="u278919db" id="u278919db">https://www.yuque.com/hollis666/vhr2ge/vi2dze</span></a></p>
  <p data-lake-id="uf0574878" id="uf0574878"><span data-lake-id="u957dd6f2" id="u957dd6f2">缓存穿透问题：</span><a href="https://www.yuque.com/hollis666/vhr2ge/abfis3" target="_blank" data-lake-id="u308601f8" id="u308601f8"><span data-lake-id="ucae19967" id="ucae19967">https://www.yuque.com/hollis666/vhr2ge/abfis3</span></a></p>
  <p data-lake-id="ue00f7adb" id="ue00f7adb"><br></p>
  <p data-lake-id="u67144bd1" id="u67144bd1"><br></p>
  <blockquote data-lake-id="u6ed33e04" id="u6ed33e04" class="lake-alert lake-alert-color4">
   <p data-lake-id="u497fefed" id="u497fefed"><span data-lake-id="ua841afce" id="ua841afce">介绍一下</span><span data-lake-id="ua47eefd4" id="ua47eefd4">threadlocal</span><span data-lake-id="u020b6975" id="u020b6975">？弱引用，</span><span data-lake-id="u600e4bf5" id="u600e4bf5">threadlocal</span><span data-lake-id="u82059f9a" id="u82059f9a">能解决并发的问题吗？</span><span data-lake-id="u5eaa85a8" id="u5eaa85a8">threadlocal</span><span data-lake-id="u0c5d3b6d" id="u0c5d3b6d">会有内存泄露的问题吗？</span><span data-lake-id="u1d678821" id="u1d678821">threadlocalMap</span><span data-lake-id="u9119262b" id="u9119262b">和普通的</span><span data-lake-id="ua944dbcf" id="ua944dbcf">hashmap</span><span data-lake-id="u733b9050" id="u733b9050">有什么区别？</span></p>
  </blockquote>
  <p data-lake-id="uede231f3" id="uede231f3"><br></p>
  <p data-lake-id="u66f6f48a" id="u66f6f48a"><span data-lake-id="ubcb8e610" id="ubcb8e610">threadlocal：</span><a href="https://www.yuque.com/hollis666/vhr2ge/ihoye3" target="_blank" data-lake-id="u7b2e494f" id="u7b2e494f"><span data-lake-id="u9a867e9a" id="u9a867e9a">https://www.yuque.com/hollis666/vhr2ge/ihoye3</span></a></p>
  <p data-lake-id="u36cf6046" id="u36cf6046"><br></p>
  <blockquote data-lake-id="ufdbfdf8d" id="ufdbfdf8d" class="lake-alert lake-alert-color4">
   <p data-lake-id="ua6b47e27" id="ua6b47e27"><span data-lake-id="uc2db5efa" id="uc2db5efa">Hashmap</span><span data-lake-id="ud9dfca5e" id="ud9dfca5e">在</span><span data-lake-id="uaf23e784" id="uaf23e784">1.8</span><span data-lake-id="ubee2e5ae" id="ubee2e5ae">中除了引入红黑树、还有其他改动吗？为什么头插法要改成尾插法？</span><span data-lake-id="u78f9cf21" id="u78f9cf21">hashmap</span><span data-lake-id="uee6c63f7" id="uee6c63f7">的方法的具体实现，比如</span><span data-lake-id="u443936eb" id="u443936eb">put</span><span data-lake-id="udd2a536b" id="udd2a536b">？</span><span data-lake-id="uc15719c9" id="uc15719c9">hashcode</span><span data-lake-id="ud31bd825" id="ud31bd825">是怎么取到的？</span></p>
   <p data-lake-id="u1d6c0f82" id="u1d6c0f82"><span data-lake-id="ue2875283" id="ue2875283">扩容是怎么实现的？</span></p>
   <p data-lake-id="uc893376a" id="uc893376a"><span data-lake-id="u2ab93df5" id="u2ab93df5">1.8里面concurrenthashmap有改动吗？</span></p>
  </blockquote>
  <p data-lake-id="ua42ad00b" id="ua42ad00b"><br></p>
  <p data-lake-id="uc37acba6" id="uc37acba6"><span data-lake-id="u1ad60c8f" id="u1ad60c8f">头插法&amp;尾插法：</span><a href="https://www.yuque.com/hollis666/vhr2ge/ph44ot" data-lake-id="u7ea5e4b2" id="u7ea5e4b2"><span data-lake-id="u4cb25355" id="u4cb25355">https://www.yuque.com/hollis666/vhr2ge/ph44ot</span></a></p>
  <p data-lake-id="u0d625ca1" id="u0d625ca1"><span data-lake-id="u598793f3" id="u598793f3">hashmap的扩容：</span><a href="https://www.yuque.com/hollis666/vhr2ge/co1ul8" data-lake-id="uddd3c400" id="uddd3c400"><span data-lake-id="ue1900212" id="ue1900212">https://www.yuque.com/hollis666/vhr2ge/co1ul8</span></a></p>
  <p data-lake-id="u2e7bb6df" id="u2e7bb6df"><span data-lake-id="uc4d80dd8" id="uc4d80dd8">​</span><br></p>
 </body>
</html>